/**
 * @author yuechao
 * 
 * Example class 有很多垃圾信息， 不再生成，
 * 
 * 系统使用公共的东西替换
 * 
 */
package smr.mybatis.plugin;

import java.util.List;

import org.mybatis.generator.api.IntrospectedTable;
import org.mybatis.generator.api.PluginAdapter;
import org.mybatis.generator.api.dom.java.TopLevelClass;

public class ExampleClassPlugin extends PluginAdapter {

	/*
	 * (non-Javadoc)
	 * 
	 * @see org.mybatis.generator.api.Plugin#validate(java.util.List)
	 */
	@Override
	public boolean validate(List<String> warnings) {
		return true;
	}

	 @Override
	public void initialized(IntrospectedTable introspectedTable) {
		String oldType = introspectedTable.getExampleType();
		oldType = "com.wontube.core.dao.mybatis.QueryExample";

		introspectedTable.setExampleType(oldType);
	}
	 
	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * org.mybatis.generator.api.PluginAdapter#modelExampleClassGenerated(org
	 * .mybatis.generator.api.dom.java.TopLevelClass,
	 * org.mybatis.generator.api.IntrospectedTable)
	 */
	@Override
	public boolean modelExampleClassGenerated(TopLevelClass topLevelClass,
			IntrospectedTable introspectedTable) {
//		// 清除所有内部类
//		topLevelClass.getInnerClasses().clear();
//		
//		try {
//			Class<?> clazz = topLevelClass.getClass();
//			// 清空引用
//			java.lang.reflect.Field filed = clazz.getField("importedTypes");
//			filed.setAccessible(true);
//
//			@SuppressWarnings("unchecked")
//			Set<FullyQualifiedJavaType> set = (Set<FullyQualifiedJavaType>) filed
//					.get(topLevelClass);
//			set.clear();
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
//
//		// 添加引用
//		topLevelClass.addImportedType(new FullyQualifiedJavaType(
//				"java.util.ArrayList"));
//		topLevelClass.addImportedType(new FullyQualifiedJavaType(
//				"java.util.List"));
//		topLevelClass.addImportedType(new FullyQualifiedJavaType(
//				"core.dao.mybatis.Criteria"));

		return false;
	}
}
